import 'dart:ui';

import 'package:flutter/material.dart';
import 'package:magic_car/UI/Loading.dart';
import 'package:magic_car/common/nodata.dart';
import 'package:magic_car/res/colors.dart';
import 'package:magic_car/user/anserdetail.dart';
import 'package:magic_car/user/checkstudyinfo.dart';
import 'package:magic_car/util/HttpHelper.dart';
import 'package:magic_car/util/config.dart';
import 'package:modal_progress_hud/modal_progress_hud.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:toast/toast.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:flutter_full_pdf_viewer/full_pdf_viewer_scaffold.dart';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:path_provider/path_provider.dart';
// import 'package:flutter_file_preview/flutter_file_preview.dart';

class StudyInfoPage extends StatefulWidget {
  StudyInfoPage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<StudyInfoPage> {
  List formList;
  ScrollController _controller = new ScrollController();
  int page = 1;
  bool end = false;
  String keyword = "";
  var imgsLeng = 0;
  String current_pdf_url;
bool _saving = false;
  initState() {
    super.initState();
    _controller.addListener(() {
      if (_controller.position.pixels == _controller.position.maxScrollExtent) {
        print('滑动到了最底部');
        loadData();
      }
    });

    formList = [];
    loadData();
  }

  //加载数据
  loadData() async {
    // if(keyword!=""){
    //   print(keyword);
    // if(end)return;
    // }
    if (end) return;
    Map<String, String> map = new Map();
    SharedPreferences pref = await SharedPreferences.getInstance();
    map["id"] = pref.getString('uid');
    map["page"] = page.toString();
    map["keyword"] = keyword;
    print(map);

    HttpHelper.post(HttpHelper.API_StudyInfo, (data) async {
      if (data != null) {
        print(data);
        print(data["info"].length.toString());
        if (data["info"].length == 0) {
          Toast.show('暂无更多数据', context);
        } else {
          if (data["code"].toString() == "1") {
            if (data["info"].length < 10) {
              setState(() {
                end = true;
              });
            }
            if (page > 1) {
              List add = data["info"];
              formList.addAll(add);
              setState(() {
                formList = formList;
              });
            } else {
              setState(() {
                formList = data["info"];
                page = page + 1;
              });
            }
          }
        }
      }
    }, params: map);
  }

  Widget buildImgs(item) {
    List<Widget> tiles = [];

    Widget content;

    List items = item["image_url"];
    print(items.length.toString());

    for (var i = 0; i < items.length; i++) {
      //List temp1 = items[i] as List;
      tiles.add(Padding(
        padding: new EdgeInsets.fromLTRB(5, 0, 0, 10),
        child: GestureDetector(
            onTap: () {
              // print('点击查看图片');
              // Navigator.of(context).push(
              //   NinePicture(items, i),
              // );
            },
            child: Image.network(items[i], width: 100, height: 100)),
      ));
    }
    content = new Wrap(
        children: tiles //重点在这里，因为用编辑器写Column生成的children后面会跟一个<Widget>[]，
        //此时如果我们直接把生成的tiles放在<Widget>[]中是会报一个类型不匹配的错误，把<Widget>[]删了就可以了
        );
    return content;
  }

  Widget buildcontent() {
    List<Widget> tiles = [];
    Widget content;
    if (formList.length > 0) {
      for (var item in formList) {
        tiles.add(Padding(
            padding: new EdgeInsets.fromLTRB(15, 15, 15, 0),
            child: Container(
              decoration: new BoxDecoration(
                color: Colors.white,
                borderRadius: BorderRadius.all(Radius.circular(5.0)),
              ),
              child: new GestureDetector(
                  behavior: HitTestBehavior.opaque,
                  onTap: () async {
                    if (item['cancheck'] == "0") {
                      Toast.show('无权限查看', context);
                      return;
                    }
                    if (item['type'].toString() != '4') {
                    setState(() {
                      _saving = true;
                    });
                      current_pdf_url = item['link_url'];
                      createFileOfPdfUrl().then((f) {
                         setState(() {
                      _saving = false;
                    });
                        Navigator.push(
                            context,
                            MaterialPageRoute(
                                builder: (context) => PDFScreen(f.path)));
                      });
                      // await createFileOfPdfUrl();

                    } else {
                      // launch(item['link_url']);
                      // launch('http://ylz.9ok6.com/addons/chemogu/data/studyinfo/160066381116.docx');
                      Navigator.of(context)
                          .push(new MaterialPageRoute(builder: (_) {
                        return new CheckStudyInfoPage(item);
                      }));
                    }
                  },
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.start,
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: <Widget>[
                      Padding(
                        padding: new EdgeInsets.fromLTRB(20, 15, 20, 10),
                        child: Column(
                          children: <Widget>[Text(item["name"])],
                        ),
                      ),
                      Padding(
                        padding: new EdgeInsets.fromLTRB(20, 0, 20, 10),
                        child: Row(
                          children: <Widget>[
                            Text(
                              '资料类型：' + item["type_str"],
                              style: TextStyle(fontSize: 13),
                            ),
                            Padding(
                                padding: new EdgeInsets.fromLTRB(5, 0, 0, 0),
                                child: Image.asset(
                                    item['cancheck'] == "1"
                                        ? 'resource/images/user/unlock.png'
                                        : 'resource/images/user/lock.png',
                                    width: 20,
                                    height: 15)),
                          ],
                        ),
                      ),
                      // item['image_url'].length > 0
                      //     ? Padding(
                      //         padding: new EdgeInsets.fromLTRB(5, 10, 20, 10),
                      //         child: buildImgs(item),
                      //         // child: Row(
                      //         //   children: <Widget>[Text('总试题数：16')],
                      //         // ),
                      //       )
                      //     : new Container(height: 0),
                      Padding(
                        padding: new EdgeInsets.fromLTRB(20, 0, 20, 10),
                        child: Row(
                          children: <Widget>[
                            Expanded(
                                flex: 1,
                                child: Text(
                                  item["created_at"],
                                  style: TextStyle(
                                      color: Color.fromRGBO(153, 153, 153, 1),
                                      fontSize: 13),
                                )),
                            // Expanded(
                            //   flex: 1,
                            //   child: Align(
                            //       alignment: Alignment.centerRight,
                            //       child: Container(
                            //           height: 30,
                            //           child: new RaisedButton(
                            //             child: Text('我来回答'),
                            //             textColor:
                            //                 Color.fromRGBO(27, 182, 251, 1),
                            //             color: Color.fromRGBO(201, 235, 250, 1),
                            //             onPressed: () {
                            //               Navigator.of(context).push(
                            //                   new MaterialPageRoute(builder: (_) {
                            //                 return new AnswerdeailPage(item["id"].toString());
                            //               }));
                            //             },
                            //           ))),
                            // )
                          ],
                        ),
                      ),
                    ],
                  )),
            )));
      }
    }
    content = new Column(
        children: tiles //重点在这里，因为用编辑器写Column生成的children后面会跟一个<Widget>[]，
        //此时如果我们直接把生成的tiles放在<Widget>[]中是会报一个类型不匹配的错误，把<Widget>[]删了就可以了
        );
    return content;
  }

  Widget build(BuildContext context) {
    return
        // new MaterialApp(
        //     title: '结构件',
        //     home:
        new Scaffold(
           backgroundColor: Colours.base_page_color,
            appBar: new AppBar(
              titleSpacing: 0,
              title: new Text(
                '学习资料',
                style: TextStyle(color: Colors.black,fontSize: Config.title_size),
              ),
              backgroundColor: Colors.white,
              elevation: 0,
              // backgroundColor: Color.fromRGBO(255, 204, 48, 1),
            ),
            // floatingActionButtonLocation: FloatingActionButtonLocation.endFloat,
            // floatingActionButton: FloatingActionButton(
            //   onPressed: () {
            //     Navigator.pushNamed(context, "upAsk");
            //   },
            //   child: Icon(
            //     Icons.add,
            //     color: Colors.white,
            //   ),
            //   backgroundColor: Color.fromRGBO(27, 182, 251, 1),
            // ),
            body:
            ModalProgressHUD(
              // color: Colors.blue,
              inAsyncCall: _saving,
              child:
             new Center(
                child: Container(
                    decoration: new BoxDecoration(
                      // color: Color.fromRGBO(238, 238, 238, 1),
                    ),
                   
                    child:
                        // new ListView(children: <Widget>[
                        Stack(
                      children: <Widget>[
                        Align(
                          alignment: Alignment.topLeft,
                          child: SizedBox(
                              width: double.infinity,
                              height: 60,
                              child: Padding(
                                  padding:
                                      new EdgeInsets.fromLTRB(15, 10, 15, 10),
                                  // padding: new EdgeInsets.all(10),
                                  child: Container(
                                      child: Row(
                                          mainAxisAlignment:
                                              MainAxisAlignment.end,
                                          children: <Widget>[
                                        Expanded(
                                          child: new Container(
                                            child: new TextField(
                                              onSubmitted: (value) {
                                                print(value);
                                                //if(value=="")return;
                                                setState(() {
                                                  keyword = value;
                                                  page = 1;
                                                  end = false;
                                                });
                                                print('搜索');
                                                loadData();
                                              },
                                              // controller: _phonecontroller,
                                              decoration: new InputDecoration(
                                                  border: InputBorder.none,
                                                  hintText: '搜索',
                                                  prefixIcon:
                                                      Icon(Icons.search)),
                                            ),
                                            decoration: new BoxDecoration(
//背景
                                              color: Colors.white,
                                              //设置四周圆角 角度 这里的角度应该为 父Container height 的一半
                                              borderRadius: BorderRadius.all(
                                                  Radius.circular(25.0)),
                                              //设置四周边框
                                              border: new Border.all(
                                                  width: 1,
                                                  color: Colors.white),
                                            ),
                                          ),
                                        ),
                                        // FlatButton(
                                        //     onPressed: () {
                                        //       Navigator.pushNamed(context, "upAsk");
                                        //     },
                                        //     child: new Text(
                                        //       "我要提问",
                                        //       style: TextStyle(
                                        //           color: Color.fromRGBO(
                                        //               27, 182, 251, 1),
                                        //           fontSize: 13),
                                        //     ))
                                      ])))),
                        ),
                        Align(
                            alignment: Alignment.bottomCenter,
                            child: Padding(
                                padding: new EdgeInsets.fromLTRB(0, 60, 0, 10),
                                child: new RefreshIndicator(
                                  onRefresh: _onRefresh,
                                  child: formList.length == 0 && page == 1
                                      ? Nodata()
                                      : new ListView(
                                          controller: _controller,
                                          children: <Widget>[buildcontent()]),
                                ))),
                      ],
                    )))
            //])))),
            ));
  }

  Future<File> createFileOfPdfUrl() async {
    // final url = "http://africau.edu/images/default/sample.pdf";
    // String url = info['link_url'];
    String url = current_pdf_url;
    final filename = url.substring(url.lastIndexOf("/") + 1);
    var request = await HttpClient().getUrl(Uri.parse(url));
    var response = await request.close();
    var bytes = await consolidateHttpClientResponseBytes(response);
    String dir = (await getApplicationDocumentsDirectory()).path;
    File file = new File('$dir/$filename');
    await file.writeAsBytes(bytes);
    return file;
  }

  Future<Null> _onRefresh() async {
    await Future.delayed(Duration(seconds: 3), () {
      print('refresh');
      setState(() {
        page = 1;
      });
      loadData();
    });
  }
}

class PDFScreen extends StatelessWidget {
  String pathPDF = "";
  PDFScreen(this.pathPDF);

  @override
  Widget build(BuildContext context) {
    return PDFViewerScaffold(
        appBar: AppBar(
          titleSpacing: 0,
          title: Text("学习资料",style: TextStyle(fontSize: Config.title_size),), backgroundColor: Colors.white),
        path: pathPDF);
  }
}
